/*
 *  Arrow
 *
 *  Created by David Giovannini on 1/5/07.
 *  Copyright 2007 Software by Jove. All rights reserved.
 *
 */
 
#ifndef SBJ_Arrow_EnqueuePolicyPolicy_h
#define SBJ_Arrow_EnqueuePolicyPolicy_h

#include "SBJ/Arrow/Queue.h"

namespace SBJ
{

namespace Arrow
{

class EnqueuePolicy
{
public:
	typedef Message::Priority Priority;

	enum ESide
	{
		eSide_none,
		eSide_front,
		eSide_back
	};
	
	EnqueuePolicy( void ) {}

	virtual ~EnqueuePolicy( void ) {}

	virtual bool dropOutOfRange( void ) const { return true; }
	
	virtual bool moveToNextOnFull( int priority ) { return false; }
	
	virtual ESide replaceOnFull( int priority ) { return eSide_none; }
	
};

}

}

#endif